/*
* 函数类型表达式和函数调用签名
*   如果只是描述函数类型本身(函数可以被调用)，使用函数类型表达式
*   如果在描述函数作为对象可以被调用，同时拥有其它属性时，使用函数调用签名
* */
// 函数类型表达式
type BarType = (message: string) => string
const foo: BarType = (message: string): string => {
    return message
}
console.log(foo("TYPESCRIPT"))

// 函数调用签名(从对象的角度来看待函数也可以有其它属性)
interface InterfaceBar {
    name: string,
    age: number,

    // 函数调用签名
    (num1: number): number
}

const bar: InterfaceBar = (num1: number): number => {
    return num1
}
bar.age = 20
bar.name = "陶品奇"
const res: number = bar(10)
console.log(res)
